/**
 * File:   image_dither.c
 * Author: AWTK Develop Team
 * Brief:  bitmap image generator
 *
 * Copyright (c) 2018 - 2020  Guangzhou ZHIYUAN Electronics Co.,Ltd.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * License file for more details.
 *
 */

/**
 * History:
 * ================================================================
 * 2020-05-26 Luo ZhiMing <luozhiming@zlg.cn> created
 *
 */

#include "tkc/mem.h"
#include "tkc/color.h"
#include "base/bitmap.h"
#include "base/types_def.h"


#define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
#define STB_IMAGE_RESIZE_IMPLEMENTATION

#include "stb/stb_image.h"

#ifndef WITH_STB_IMAGE
#include "stb/stb_image_write.h"
#else
extern int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes);
#endif /*WITH_STB_IMAGE*/

typedef void (*set_dst_data_func_t)(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a);


static const int32_t best_red_table[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 };
static const int32_t (*best_blue_table) = best_red_table;
static const int32_t best_greed_table[] = { 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 };

static const int32_t error_red_table[][32] = {
	{ 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -189, -198, -206, -214, -222, -231, -239, -247, -256 },
	{ 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -188, -197, -205, -213, -221, -230, -238, -246, -255 },
	{ 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -187, -196, -204, -212, -220, -229, -237, -245, -254 },
	{ 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -186, -195, -203, -211, -219, -228, -236, -244, -253 },
	{ 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -185, -194, -202, -210, -218, -227, -235, -243, -252 },
	{ 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -184, -193, -201, -209, -217, -226, -234, -242, -251 },
	{ 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -183, -192, -200, -208, -216, -225, -233, -241, -250 },
	{ 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -182, -191, -199, -207, -215, -224, -232, -240, -249 },
	{ 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -181, -190, -198, -206, -214, -223, -231, -239, -248 },
	{ 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -180, -189, -197, -205, -213, -222, -230, -238, -247 },
	{ 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -179, -188, -196, -204, -212, -221, -229, -237, -246 },
	{ 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -178, -187, -195, -203, -211, -220, -228, -236, -245 },
	{ 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -177, -186, -194, -202, -210, -219, -227, -235, -244 },
	{ 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -176, -185, -193, -201, -209, -218, -226, -234, -243 },
	{ 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -175, -184, -192, -200, -208, -217, -225, -233, -242 },
	{ 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -174, -183, -191, -199, -207, -216, -224, -232, -241 },
	{ 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -173, -182, -190, -198, -206, -215, -223, -231, -240 },
	{ 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -172, -181, -189, -197, -205, -214, -222, -230, -239 },
	{ 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -171, -180, -188, -196, -204, -213, -221, -229, -238 },
	{ 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -170, -179, -187, -195, -203, -212, -220, -228, -237 },
	{ 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -169, -178, -186, -194, -202, -211, -219, -227, -236 },
	{ 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -168, -177, -185, -193, -201, -210, -218, -226, -235 },
	{ 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -167, -176, -184, -192, -200, -209, -217, -225, -234 },
	{ 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -166, -175, -183, -191, -199, -208, -216, -224, -233 },
	{ 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -165, -174, -182, -190, -198, -207, -215, -223, -232 },
	{ 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -164, -173, -181, -189, -197, -206, -214, -222, -231 },
	{ 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -163, -172, -180, -188, -196, -205, -213, -221, -230 },
	{ 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -162, -171, -179, -187, -195, -204, -212, -220, -229 },
	{ 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -161, -170, -178, -186, -194, -203, -211, -219, -228 },
	{ 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -160, -169, -177, -185, -193, -202, -210, -218, -227 },
	{ 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -159, -168, -176, -184, -192, -201, -209, -217, -226 },
	{ 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -158, -167, -175, -183, -191, -200, -208, -216, -225 },
	{ 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -157, -166, -174, -182, -190, -199, -207, -215, -224 },
	{ 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -189, -198, -206, -214, -223 },
	{ 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -188, -197, -205, -213, -222 },
	{ 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -187, -196, -204, -212, -221 },
	{ 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -186, -195, -203, -211, -220 },
	{ 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -185, -194, -202, -210, -219 },
	{ 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -184, -193, -201, -209, -218 },
	{ 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -183, -192, -200, -208, -217 },
	{ 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -182, -191, -199, -207, -216 },
	{ 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -181, -190, -198, -206, -215 },
	{ 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -180, -189, -197, -205, -214 },
	{ 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -179, -188, -196, -204, -213 },
	{ 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -178, -187, -195, -203, -212 },
	{ 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -177, -186, -194, -202, -211 },
	{ 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -176, -185, -193, -201, -210 },
	{ 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -175, -184, -192, -200, -209 },
	{ 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -174, -183, -191, -199, -208 },
	{ 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -173, -182, -190, -198, -207 },
	{ 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -172, -181, -189, -197, -206 },
	{ 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -171, -180, -188, -196, -205 },
	{ 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -170, -179, -187, -195, -204 },
	{ 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -169, -178, -186, -194, -203 },
	{ 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -168, -177, -185, -193, -202 },
	{ 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -167, -176, -184, -192, -201 },
	{ 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -166, -175, -183, -191, -200 },
	{ 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -165, -174, -182, -190, -199 },
	{ 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -164, -173, -181, -189, -198 },
	{ 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -163, -172, -180, -188, -197 },
	{ 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -162, -171, -179, -187, -196 },
	{ 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -161, -170, -178, -186, -195 },
	{ 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -160, -169, -177, -185, -194 },
	{ 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -159, -168, -176, -184, -193 },
	{ 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -158, -167, -175, -183, -192 },
	{ 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -157, -166, -174, -182, -191 },
	{ 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -190 },
	{ 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -189 },
	{ 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -188 },
	{ 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -187 },
	{ 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -186 },
	{ 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -185 },
	{ 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -184 },
	{ 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -183 },
	{ 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -182 },
	{ 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -181 },
	{ 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -180 },
	{ 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -179 },
	{ 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -178 },
	{ 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -177 },
	{ 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -176 },
	{ 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -175 },
	{ 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -174 },
	{ 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -173 },
	{ 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -172 },
	{ 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -171 },
	{ 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -170 },
	{ 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -169 },
	{ 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -168 },
	{ 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -167 },
	{ 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -166 },
	{ 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -165 },
	{ 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -164 },
	{ 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -163 },
	{ 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -162 },
	{ 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -161 },
	{ 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -160 },
	{ 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -159 },
	{ 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -158 },
	{ 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -157 },
	{ 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -156 },
	{ 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -155 },
	{ 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -154 },
	{ 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -153 },
	{ 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -152 },
	{ 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -151 },
	{ 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -150 },
	{ 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -149 },
	{ 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -148 },
	{ 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -147 },
	{ 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -146 },
	{ 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -145 },
	{ 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -144 },
	{ 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -143 },
	{ 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -142 },
	{ 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -141 },
	{ 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -140 },
	{ 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -139 },
	{ 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -138 },
	{ 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -137 },
	{ 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -136 },
	{ 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -135 },
	{ 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -134 },
	{ 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -133 },
	{ 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -132 },
	{ 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -131 },
	{ 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -130 },
	{ 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -129 },
	{ 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -128 },
	{ 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -127 },
	{ 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -126 },
	{ 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -125 },
	{ 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -124 },
	{ 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -123 },
	{ 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -122 },
	{ 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -121 },
	{ 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -120 },
	{ 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -119 },
	{ 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -118 },
	{ 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -117 },
	{ 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -116 },
	{ 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -115 },
	{ 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -114 },
	{ 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -113 },
	{ 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -112 },
	{ 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -111 },
	{ 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -110 },
	{ 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -109 },
	{ 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -108 },
	{ 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -107 },
	{ 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -106 },
	{ 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -105 },
	{ 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -104 },
	{ 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -103 },
	{ 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -102 },
	{ 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -101 },
	{ 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -100 },
	{ 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -99 },
	{ 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -98 },
	{ 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -97 },
	{ 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -96 },
	{ 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -95 },
	{ 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -94 },
	{ 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -93 },
	{ 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -92 },
	{ 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -91 },
	{ 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -90 },
	{ 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -89 },
	{ 168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -88 },
	{ 169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -87 },
	{ 170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -86 },
	{ 171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -85 },
	{ 172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -84 },
	{ 173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -83 },
	{ 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -82 },
	{ 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -81 },
	{ 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -80 },
	{ 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -79 },
	{ 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -78 },
	{ 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -77 },
	{ 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -76 },
	{ 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -75 },
	{ 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -74 },
	{ 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -73 },
	{ 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -72 },
	{ 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -71 },
	{ 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -70 },
	{ 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -69 },
	{ 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -68 },
	{ 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -67 },
	{ 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -66 },
	{ 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -65 },
	{ 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -64 },
	{ 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -63 },
	{ 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -62 },
	{ 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -61 },
	{ 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -60 },
	{ 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -59 },
	{ 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -58 },
	{ 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -57 },
	{ 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -56 },
	{ 201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -55 },
	{ 202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -54 },
	{ 203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -53 },
	{ 204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -52 },
	{ 205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -51 },
	{ 206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -50 },
	{ 207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -49 },
	{ 208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -48 },
	{ 209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -47 },
	{ 210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -46 },
	{ 211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -45 },
	{ 212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -44 },
	{ 213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -43 },
	{ 214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -42 },
	{ 215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -41 },
	{ 216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -40 },
	{ 217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -39 },
	{ 218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -38 },
	{ 219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -37 },
	{ 220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -36 },
	{ 221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -35 },
	{ 222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -34 },
	{ 223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -33 },
	{ 224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -32 },
	{ 225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -31 },
	{ 226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -30 },
	{ 227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -29 },
	{ 228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -28 },
	{ 229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -27 },
	{ 230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -26 },
	{ 231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -25 },
	{ 232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -24 },
	{ 233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -23 },
	{ 234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -22 },
	{ 235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -21 },
	{ 236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -20 },
	{ 237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -19 },
	{ 238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -18 },
	{ 239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -17 },
	{ 240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -16 },
	{ 241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -15 },
	{ 242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -14 },
	{ 243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -13 },
	{ 244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -12 },
	{ 245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -11 },
	{ 246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -10 },
	{ 247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -9 },
	{ 248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -8 },
	{ 249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -7 },
	{ 250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -6 },
	{ 251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -5 },
	{ 252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -4 },
	{ 253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -3 },
	{ 254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -2 },
	{ 255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, -1 },
	{ 256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 0 },
	{ 257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 1 },
	{ 258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 2 },
	{ 259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 3 },
	{ 260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 4 },
	{ 261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 5 },
	{ 262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 6 },
	{ 263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 7 },
	{ 264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 8 },
	{ 265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 9 },
	{ 266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 10 },
	{ 267, 259, 251, 243, 234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 11 },
	{ 268, 260, 252, 244, 235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 12 },
	{ 269, 261, 253, 245, 236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 13 },
	{ 270, 262, 254, 246, 237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 14 },
	{ 271, 263, 255, 247, 238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 15 },
	{ 272, 264, 256, 248, 239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 16 },
	{ 273, 265, 257, 249, 240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 17 },
	{ 274, 266, 258, 250, 241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 18 },
	{ 275, 267, 259, 251, 242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 19 },
	{ 276, 268, 260, 252, 243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 20 },
	{ 277, 269, 261, 253, 244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 21 },
	{ 278, 270, 262, 254, 245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 22 },
	{ 279, 271, 263, 255, 246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 23 },
	{ 280, 272, 264, 256, 247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 24 },
	{ 281, 273, 265, 257, 248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 25 },
	{ 282, 274, 266, 258, 249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 26 },
	{ 283, 275, 267, 259, 250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 27 },
	{ 284, 276, 268, 260, 251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 28 },
	{ 285, 277, 269, 261, 252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 29 },
	{ 286, 278, 270, 262, 253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 30 },
	{ 287, 279, 271, 263, 254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 31 },
	{ 288, 280, 272, 264, 255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 32 },
	{ 289, 281, 273, 265, 256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 33 },
	{ 290, 282, 274, 266, 257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 34 },
	{ 291, 283, 275, 267, 258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 35 },
	{ 292, 284, 276, 268, 259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 36 },
	{ 293, 285, 277, 269, 260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 37 },
	{ 294, 286, 278, 270, 261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 38 },
	{ 295, 287, 279, 271, 262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 39 },
	{ 296, 288, 280, 272, 263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 40 },
	{ 297, 289, 281, 273, 264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 41 },
	{ 298, 290, 282, 274, 265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 42 },
	{ 299, 291, 283, 275, 266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 43 },
};
static const int32_t (*error_blue_table)[32] = error_red_table;
static const int32_t error_greed_table[][64] = {
	{ 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -251, -256 },
	{ 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -250, -255 },
	{ 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -249, -254 },
	{ 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -248, -253 },
	{ 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -252 },
	{ 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -251 },
	{ 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -250 },
	{ 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -249 },
	{ 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -248 },
	{ 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -247 },
	{ 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -246 },
	{ 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -245 },
	{ 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -244 },
	{ 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -243 },
	{ 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -242 },
	{ 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -241 },
	{ 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -240 },
	{ 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -239 },
	{ 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -238 },
	{ 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -237 },
	{ 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -236 },
	{ 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -235 },
	{ 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -234 },
	{ 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -233 },
	{ 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -232 },
	{ 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -231 },
	{ 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -230 },
	{ 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -229 },
	{ 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -228 },
	{ 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -227 },
	{ 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -226 },
	{ 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -225 },
	{ 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -224 },
	{ 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -223 },
	{ 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -222 },
	{ 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -221 },
	{ 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -220 },
	{ 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -219 },
	{ 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -218 },
	{ 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -217 },
	{ 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -216 },
	{ 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -215 },
	{ 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -214 },
	{ 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -213 },
	{ 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -212 },
	{ 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -211 },
	{ 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -210 },
	{ 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -209 },
	{ 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -208 },
	{ 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -207 },
	{ 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -206 },
	{ 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -205 },
	{ 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -204 },
	{ 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -203 },
	{ 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -202 },
	{ 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -201 },
	{ 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -200 },
	{ 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -199 },
	{ 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -198 },
	{ 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -197 },
	{ 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -196 },
	{ 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -195 },
	{ 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -194 },
	{ 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -193 },
	{ 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -192 },
	{ 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -191 },
	{ 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -190 },
	{ 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -189 },
	{ 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -188 },
	{ 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -187 },
	{ 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -186 },
	{ 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -185 },
	{ 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -184 },
	{ 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -183 },
	{ 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -182 },
	{ 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -181 },
	{ 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -180 },
	{ 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -179 },
	{ 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -178 },
	{ 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -177 },
	{ 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -176 },
	{ 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -175 },
	{ 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -174 },
	{ 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -173 },
	{ 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -172 },
	{ 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -171 },
	{ 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -170 },
	{ 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -169 },
	{ 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -168 },
	{ 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -167 },
	{ 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -166 },
	{ 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -165 },
	{ 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -164 },
	{ 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -163 },
	{ 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -162 },
	{ 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -161 },
	{ 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -160 },
	{ 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -159 },
	{ 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -158 },
	{ 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -157 },
	{ 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -156 },
	{ 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -155 },
	{ 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -154 },
	{ 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -153 },
	{ 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -152 },
	{ 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -151 },
	{ 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -150 },
	{ 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -149 },
	{ 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -148 },
	{ 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -147 },
	{ 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -146 },
	{ 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -145 },
	{ 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -144 },
	{ 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -143 },
	{ 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -142 },
	{ 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -141 },
	{ 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -140 },
	{ 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -139 },
	{ 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -138 },
	{ 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -137 },
	{ 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -136 },
	{ 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -135 },
	{ 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -134 },
	{ 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -133 },
	{ 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -132 },
	{ 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -131 },
	{ 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -130 },
	{ 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -129 },
	{ 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -128 },
	{ 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -127 },
	{ 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -126 },
	{ 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -125 },
	{ 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -124 },
	{ 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -123 },
	{ 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -122 },
	{ 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -121 },
	{ 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -120 },
	{ 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -119 },
	{ 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -118 },
	{ 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -117 },
	{ 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -116 },
	{ 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -115 },
	{ 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -114 },
	{ 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -113 },
	{ 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -112 },
	{ 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -111 },
	{ 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -110 },
	{ 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -109 },
	{ 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -108 },
	{ 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -107 },
	{ 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -106 },
	{ 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -105 },
	{ 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -104 },
	{ 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -103 },
	{ 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -102 },
	{ 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -101 },
	{ 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -100 },
	{ 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -99 },
	{ 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -98 },
	{ 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -97 },
	{ 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -96 },
	{ 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -95 },
	{ 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -94 },
	{ 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -93 },
	{ 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -92 },
	{ 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -91 },
	{ 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -90 },
	{ 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -89 },
	{ 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -88 },
	{ 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -87 },
	{ 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -86 },
	{ 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -85 },
	{ 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -84 },
	{ 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -83 },
	{ 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -82 },
	{ 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -81 },
	{ 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -80 },
	{ 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -79 },
	{ 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -78 },
	{ 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -77 },
	{ 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -76 },
	{ 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -75 },
	{ 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -74 },
	{ 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -73 },
	{ 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -72 },
	{ 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -71 },
	{ 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -70 },
	{ 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -69 },
	{ 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -68 },
	{ 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -67 },
	{ 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -66 },
	{ 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65 },
	{ 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64 },
	{ 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63 },
	{ 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62 },
	{ 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61 },
	{ 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60 },
	{ 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59 },
	{ 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58 },
	{ 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57 },
	{ 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56 },
	{ 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55 },
	{ 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54 },
	{ 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53 },
	{ 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52 },
	{ 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51 },
	{ 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -50 },
	{ 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -49 },
	{ 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -48 },
	{ 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -47 },
	{ 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -46 },
	{ 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -45 },
	{ 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -44 },
	{ 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -43 },
	{ 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -42 },
	{ 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -41 },
	{ 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -40 },
	{ 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -39 },
	{ 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -38 },
	{ 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -37 },
	{ 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -36 },
	{ 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -35 },
	{ 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -34 },
	{ 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -33 },
	{ 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -32 },
	{ 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -31 },
	{ 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -30 },
	{ 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -29 },
	{ 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -28 },
	{ 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -27 },
	{ 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -26 },
	{ 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -25 },
	{ 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -24 },
	{ 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -23 },
	{ 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -22 },
	{ 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -21 },
	{ 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -20 },
	{ 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -19 },
	{ 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -18 },
	{ 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -17 },
	{ 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -16 },
	{ 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -15 },
	{ 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -14 },
	{ 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -13 },
	{ 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -12 },
	{ 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -11 },
	{ 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -10 },
	{ 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -9 },
	{ 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -8 },
	{ 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -7 },
	{ 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -6 },
	{ 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -5 },
	{ 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -4 },
	{ 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -3 },
	{ 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -2 },
	{ 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, -1 },
	{ 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 0 },
	{ 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 1 },
	{ 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 2 },
	{ 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 3 },
	{ 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 4 },
	{ 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 5 },
	{ 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 6 },
	{ 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 7 },
	{ 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 8 },
	{ 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 9 },
	{ 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 10 },
	{ 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 11 },
	{ 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12 },
	{ 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 13 },
	{ 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 14 },
	{ 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 15 },
	{ 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 16 },
	{ 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 17 },
	{ 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 18 },
	{ 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 19 },
	{ 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 20 },
	{ 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 21 },
	{ 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 22 },
	{ 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 23 },
	{ 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 24 },
	{ 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 25 },
	{ 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 26 },
	{ 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 27 },
	{ 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 28 },
	{ 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 29 },
	{ 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 30 },
	{ 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 31 },
	{ 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 32 },
	{ 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 33 },
	{ 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 34 },
	{ 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 35 },
	{ 292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 36 },
	{ 293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 37 },
	{ 294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 38 },
	{ 295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 39 },
	{ 296, 292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 40 },
	{ 297, 293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 41 },
	{ 298, 294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 42 },
	{ 299, 295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 43 },
};

static void image_dither_set_rgb565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  *(uint16_t*)dst = r | (g << 5) | (b << 11);
}

static void image_dither_set_bgr565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  *(uint16_t*)dst = b | (g << 5) | (r << 11);
}

static void image_dither_set_bgra_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  dst[0] = r << 3;
  dst[1] = g << 2;
  dst[2] = b << 3;
  dst[3] = a;
}

static void image_dither_set_rgba_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  dst[0] = b << 3;
  dst[1] = g << 2;
  dst[2] = r << 3;
  dst[3] = a;
}

static void image_dither_data_8888_to_565(uint8_t* src_data, uint8_t* dst_data, uint32_t src_line_width, uint32_t dst_line_width, 
                                          uint32_t src_bpp, uint32_t dst_bpp, uint32_t w, uint32_t h, set_dst_data_func_t set_dst_data) {

	rgba_t err;
	rgba_t err_1;
	int32_t x = 0;
	int32_t y = 0;
	uint8_t* dst = dst_data;
	uint8_t* src = src_data;

  int32_t rB = 0, rG = 0, rR = 0;
  int32_t cB = 0, cG = 0, cR = 0, cA = 0;

	rgba_t* _line_err = TKMEM_ZALLOCN(rgba_t, w + 2);
	rgba_t* line_err = &_line_err[1];

	for (y = 0; y < h; y++) {
		memset(&err, 0x0, sizeof(rgba_t));
		memset(&err_1, 0x0, sizeof(rgba_t));
		line_err[-1].b = 0;
		line_err[-1].g = 0;
		line_err[-1].r = 0;
		for (x = 0; x < w; x++)
		{
      if(src[3] > 0) {
        cB = src[0] + (((err.b << 1) + line_err[x].b + err_1.b) >> 2);
        cG = src[1] + (((err.g << 1) + line_err[x].g + err_1.g) >> 2);
        cR = src[2] + (((err.r << 1) + line_err[x].r + err_1.r) >> 2);
        cA = src[3];

        rB = best_blue_table[cB];
        rG = best_greed_table[cG];
        rR = best_red_table[cR];
        set_dst_data(dst, rB, rG, rR, cA);

        err.b = error_blue_table[cB][rB];
        err.g = error_greed_table[cG][rG];
        err.r = error_red_table[cR][rR];
      } else {
        set_dst_data(dst, 0, 0, 0, 0);

        err.b = 0;
        err.g = 0;
        err.r = 0;
      }
      
			err_1.b = line_err[x - 1].b;
			err_1.g = line_err[x - 1].g;
			err_1.r = line_err[x - 1].r;

			line_err[x - 1].b += err.b;
			line_err[x - 1].g += err.g;
			line_err[x - 1].r += err.r;

			line_err[x].b = err.b;
			line_err[x].g = err.g;
			line_err[x].r = err.r;

			src += src_bpp;
			dst += dst_bpp;
		}
	}

	TKMEM_FREE(_line_err);
}

static uint8_t* image_dither_convert_2_to_4(uint8_t* src, uint32_t w, uint32_t h) {
  uint32_t i = 0;
  uint8_t* s = src;
  uint8_t* d = NULL;
  uint8_t* data = NULL;
  uint32_t size = w * h;
  return_value_if_fail(src != NULL, NULL);

  data = TKMEM_ALLOC(size * 4);
  return_value_if_fail(data != NULL, NULL);

  d = data;
  for (i = 0; i < size; i++) {
    d[0] = s[0];
    d[1] = s[0];
    d[2] = s[0];
    d[3] = s[1];

    d += 4;
    s += 2;
  }

  return data;
}

ret_t image_dither_load_image(const uint8_t* buff, uint32_t buff_size, bitmap_t* image, bitmap_format_t bitmap_format) {
  int w = 0;
  int h = 0;
  int n = 0;
  ret_t ret = RET_FAIL;
  uint8_t* data = NULL;
  uint8_t* stb_data = stbi_load_from_memory(buff, buff_size, &w, &h, &n, 0);
  return_value_if_fail(stb_data != NULL, RET_FAIL);

  if (n == 2) {
    n = 4;
    data = image_dither_convert_2_to_4(stb_data, w, h);
  } else {
    data = TKMEM_ZALLOCN(uint8_t, w * h * n);
    image_dither_data_8888_to_565(stb_data, data, w * n, w * n, n, n, w, h, image_dither_set_rgba_color);
  }

  ret = bitmap_init_from_rgba(image, w, h, bitmap_format, data, n);

  stbi_image_free((uint8_t*)(stb_data));

  return ret;
}

ret_t image_dither_image_wirte_png_file(const char* output_file, bitmap_t* bitmap) {
  ret_t ret = RET_OK;
  int32_t bpp = bitmap_get_bpp(bitmap);
  int32_t line_length = bitmap_get_line_length(bitmap);
  uint8_t* idata = bitmap_lock_buffer_for_read(bitmap);
  return_value_if_fail(output_file != NULL && bitmap != NULL, RET_BAD_PARAMS);

  ret = stbi_write_png(output_file, bitmap->w, bitmap->h, bpp, idata, line_length) == 0 ? RET_FAIL : RET_OK;

  bitmap_unlock_buffer(bitmap);
  return ret;
}

